home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / mail / db.1.85.tar.gz / db.1.85.tar / db.1.85 / PORT / sinix.5.41 / include / compat.h < prev    next >
C/C++ Source or Header  |  1994-06-20  |  7KB  |  232 lines

  1. /*-
  2.  * Copyright (c) 1991, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)compat.h    8.13 (Berkeley) 2/21/94
  34.  */
  35.  
  36. #ifndef    _COMPAT_H_
  37. #define    _COMPAT_H_
  38.  
  39. #include <sys/types.h>
  40.  
  41. /*
  42.  * If your system doesn't typedef u_long, u_short, or u_char, change
  43.  * the 0 to a 1.
  44.  */
  45. #if 0
  46. typedef unsigned char    u_char;        /* 4.[34]BSD names. */
  47. typedef unsigned int    u_int;
  48. typedef unsigned long    u_long;
  49. typedef unsigned short    u_short;
  50. #endif
  51.  
  52. /* If your system doesn't typedef size_t, change the 0 to a 1. */
  53. #if 0
  54. typedef unsigned int    size_t;        /* POSIX, 4.[34]BSD names. */
  55. #endif
  56.  
  57. /* If your system doesn't typedef ssize_t, change the 0 to a 1. */
  58. #if 0
  59. typedef    int        ssize_t;    /* POSIX names. */
  60. #endif
  61.  
  62. /*
  63.  * If your system doesn't have the POSIX type for a signal mask,
  64.  * change the 0 to a 1.
  65.  */
  66. #if 0                    /* POSIX 1003.1 signal mask type. */
  67. typedef unsigned int    sigset_t;
  68. #endif
  69.  
  70. /*
  71.  * If your system's vsprintf returns a char *, not an int,
  72.  * change the 0 to a 1.
  73.  */
  74. #if 0
  75. #define    VSPRINTF_CHARSTAR
  76. #endif
  77.  
  78. /*
  79.  * If you don't have POSIX 1003.1 signals, the signal code surrounding the 
  80.  * temporary file creation is intended to block all of the possible signals
  81.  * long enough to create the file and unlink it.  All of this stuff is
  82.  * intended to use old-style BSD calls to fake POSIX 1003.1 calls.
  83.  */
  84. #ifdef    NO_POSIX_SIGNALS
  85. #define    sigemptyset(set)    (*(set) = 0)
  86. #define    sigfillset(set)        (*(set) = ~(sigset_t)0, 0)
  87. #define    sigaddset(set,signo)    (*(set) |= sigmask(signo), 0)
  88. #define    sigdelset(set,signo)    (*(set) &= ~sigmask(signo), 0)
  89. #define    sigismember(set,signo)    ((*(set) & sigmask(signo)) != 0)
  90.  
  91. #define    SIG_BLOCK    1
  92. #define    SIG_UNBLOCK    2
  93. #define    SIG_SETMASK    3
  94.  
  95. static int __sigtemp;        /* For the use of sigprocmask */
  96.  
  97. /* Repeated test of oset != NULL is to avoid "*0". */
  98. #define    sigprocmask(how, set, oset)                    \
  99.     ((__sigtemp =                            \
  100.     (((how) == SIG_BLOCK) ?                        \
  101.         sigblock(0) | *(set) :                    \
  102.     (((how) == SIG_UNBLOCK) ?                    \
  103.         sigblock(0) & ~(*(set)) :                \
  104.     ((how) == SIG_SETMASK ?                        \
  105.         *(set) : sigblock(0))))),                \
  106.     ((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) :    \
  107.         sigsetmask(__sigtemp)), 0)
  108. #endif
  109.  
  110. /*
  111.  * If your system doesn't have an include file with the appropriate
  112.  * byte order set, make sure you specify the correct one.
  113.  */
  114. #ifndef BYTE_ORDER
  115. #define    LITTLE_ENDIAN    1234        /* LSB first: i386, vax */
  116. #define    BIG_ENDIAN    4321        /* MSB first: 68000, ibm, net */
  117. #define    BYTE_ORDER    BIG_ENDIAN    /* Set for your system. */
  118. #endif
  119.  
  120. #if defined(SYSV) || defined(SYSTEM5)
  121. #define    index(a, b)        strchr(a, b)
  122. #define    rindex(a, b)        strrchr(a, b)
  123. #define    bzero(a, b)        memset(a, 0, b)
  124. #define    bcmp(a, b, n)        memcmp(a, b, n)
  125. #define    bcopy(a, b, n)        memmove(b, a, n)
  126. #endif
  127.  
  128. #if defined(BSD) || defined(BSD4_3)
  129. #define    strchr(a, b)        index(a, b)
  130. #define    strrchr(a, b)        rindex(a, b)
  131. #define    memcmp(a, b, n)        bcmp(a, b, n)
  132. #define    memmove(a, b, n)    bcopy(b, a, n)
  133. #endif
  134.  
  135. /*
  136.  * 32-bit machine.  The db routines are theoretically independent of
  137.  * the size of u_shorts and u_longs, but I don't know that anyone has
  138.  * ever actually tried it.  At a minimum, change the following #define's
  139.  * if you are trying to compile on a different type of system.
  140.  */
  141. #ifndef USHRT_MAX
  142. #define    USHRT_MAX        0xFFFF
  143. #define    ULONG_MAX        0xFFFFFFFF
  144. #endif
  145.  
  146. #ifndef O_ACCMODE            /* POSIX 1003.1 access mode mask. */
  147. #define    O_ACCMODE    (O_RDONLY|O_WRONLY|O_RDWR)
  148. #endif
  149.  
  150. #ifndef    _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 RE limit. */
  151. #define    _POSIX2_RE_DUP_MAX    255
  152. #endif
  153.  
  154. /*
  155.  * If you can't provide lock values in the open(2) call.  Note, this
  156.  * allows races to happen.
  157.  */
  158. #ifndef O_EXLOCK            /* 4.4BSD extension. */
  159. #define    O_EXLOCK    0
  160. #endif
  161.  
  162. #ifndef O_SHLOCK            /* 4.4BSD extension. */
  163. #define    O_SHLOCK    0
  164. #endif
  165.  
  166. #ifndef EFTYPE
  167. #define    EFTYPE        EINVAL        /* POSIX 1003.1 format errno. */
  168. #endif
  169.  
  170. #ifndef    WCOREDUMP            /* 4.4BSD extension */
  171. #define    WCOREDUMP(a)    0
  172. #endif
  173.  
  174. #ifndef    STDERR_FILENO
  175. #define    STDIN_FILENO    0        /* ANSI C #defines */
  176. #define    STDOUT_FILENO    1
  177. #define    STDERR_FILENO    2
  178. #endif
  179.  
  180. #ifndef SEEK_END
  181. #define    SEEK_SET    0        /* POSIX 1003.1 seek values */
  182. #define    SEEK_CUR    1
  183. #define    SEEK_END    2
  184. #endif
  185.  
  186. #ifndef _POSIX_VDISABLE            /* POSIX 1003.1 disabling char. */
  187. #define    _POSIX_VDISABLE    0        /* Some systems used 0. */
  188. #endif
  189.  
  190. #ifndef    TCSASOFT            /* 4.4BSD extension. */
  191. #define    TCSASOFT    0
  192. #endif
  193.  
  194. #ifndef _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 values. */
  195. #define    _POSIX2_RE_DUP_MAX    255
  196. #endif
  197.  
  198. #ifndef NULL                /* ANSI C #defines NULL everywhere. */
  199. #define    NULL        0
  200. #endif
  201.  
  202. #ifndef    MAX                /* Usually found in <sys/param.h>. */
  203. #define    MAX(_a,_b)    ((_a)<(_b)?(_b):(_a))
  204. #endif
  205. #ifndef    MIN                /* Usually found in <sys/param.h>. */
  206. #define    MIN(_a,_b)    ((_a)<(_b)?(_a):(_b))
  207. #endif
  208.  
  209. /* Default file permissions. */
  210. #ifndef DEFFILEMODE            /* 4.4BSD extension. */
  211. #define    DEFFILEMODE    (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  212. #endif
  213.  
  214. #ifndef S_ISDIR                /* POSIX 1003.1 file type tests. */
  215. #define    S_ISDIR(m)    ((m & 0170000) == 0040000)    /* directory */
  216. #define    S_ISCHR(m)    ((m & 0170000) == 0020000)    /* char special */
  217. #define    S_ISBLK(m)    ((m & 0170000) == 0060000)    /* block special */
  218. #define    S_ISREG(m)    ((m & 0170000) == 0100000)    /* regular file */
  219. #define    S_ISFIFO(m)    ((m & 0170000) == 0010000)    /* fifo */
  220. #endif
  221. #ifndef S_ISLNK                /* BSD POSIX 1003.1 extensions */
  222. #define    S_ISLNK(m)    ((m & 0170000) == 0120000)    /* symbolic link */
  223. #define    S_ISSOCK(m)    ((m & 0170000) == 0140000)    /* socket */
  224. #endif
  225.  
  226. /* The type of a va_list. */
  227. #ifndef _BSD_VA_LIST_            /* 4.4BSD #define. */
  228. #define    _BSD_VA_LIST_    char *
  229. #endif
  230.  
  231. #endif /* !_COMPAT_H_ */
  232.